package main

import (
	"fmt"
	"strconv"
	"sync"
	"time"
)

// 只需要定义，无需赋值
var wg sync.WaitGroup

func main() {

	//	如何避免协程未执行完成，主线程已经退出了

	for i := 0; i < 5; i++ {
		// 协程开始的时候加1
		wg.Add(1)
		go func(n int) {
			// 函数执行完成，就执行
			defer wg.Done()

			fmt.Println("协程执行..." + strconv.Itoa(n))
			time.Sleep(time.Second)
		}(i)
	}

	//	 主线程一直阻塞，什么时候wg减少为0，就停止
	wg.Wait()
}
